---
title: vNPU直通虚拟机
description: "本章节以Atlas 800 训练服务器（型号：9000）openEuler 20.03 LTS系统为例说明如何将vNPU（虚拟NPU）直通虚拟机，操作步骤中的打印信息仅为示例，请以实际操作界面为准。"
url: https://www.hiascend.com/document/detail/zh/Atlas%20200I%20A2/latest/re/virtualmachineconfiguration/configureg_0032.html
sourcePath: /source/zh/Atlas 200I A2/260RC1/re/virtualmachineconfiguration/configureg_0032.html
indexId: 8764346b74444c5c7fd1e0ba5613572ab54a06be24fd3e0eaf38015f8590306a83
---
# vNPU直通虚拟机

本章节以Atlas 800 训练服务器（型号：9000）openEuler 20.03 LTS系统为例说明如何将vNPU（虚拟NPU）直通虚拟机，操作步骤中的打印信息仅为示例，请以实际操作界面为准。

#### 操作步骤

1. 创建指定NPU芯片的vNPU。

  a. 使用root用户登录物理机，执行如下命令，查看环境上NPU芯片的PCIe信息，确定待切分的NPU芯片的PCIe信息。后续步骤以db:00.0为例。lspci | grep<device_name>

```
lspci | grep d801
3d:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d801 (rev 20)
3e:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d801 (rev 20)
60:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d801 (rev 20)
61:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d801 (rev 20)
b1:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d801 (rev 20)
b2:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d801 (rev 20)
da:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d801 (rev 20)
db:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d801 (rev 20)
```


  b. 执行如下命令，设置vNPU模式为虚拟机。npu-smi set -t vnpu-mode -d 1

```
Status                         : OK
Message                        : Set vnpu vm mode success
```


  c. 执行如下命令，查看    步骤1
中选定NPU芯片的NPU ID。
    npu-smi info

```
+-------------------------------------------------------------------------------------------+
| npu-smi 23.0.rc1.b050            Version: 23.0.rc1.b050                                   |
+----------------------+---------------+----------------------------------------------------+
| NPU   Name           | Health        | Power(W)    Temp(C)           Hugepages-Usage(page)|
| Chip                 | Bus-Id        | AICore(%)   Memory-Usage(MB)  HBM-Usage(MB)        |
+======================+===============+====================================================+
| 0     910A           | OK            | 67.8        45                0    / 0             |
| 0                    | 0000:61:00.0  | 0           2006 / 15039      0    / 32768         |
+======================+===============+====================================================+
| 1     910A           | OK            | 64.4        39                0    / 0             |
| 0                    | 0000:DB:00.0  | 0           2022 / 15039      0    / 32768         |
+======================+===============+====================================================+
| 2     910A           | OK            | 65.0        42                0    / 0             |
| 0                    | 0000:B2:00.0  | 0           2022 / 15039      0    / 32768         |
+======================+===============+====================================================+
| 3     910A           | OK            | 64.1        43                0    / 0             |
| 0                    | 0000:3E:00.0  | 0           2020 / 15039      0    / 32768         |
+======================+===============+====================================================+
| 4     910A           | OK            | 68.0        44                0    / 0             |
| 0                    | 0000:60:00.0  | 0           2005 / 15039      0    / 32768         |
+======================+===============+====================================================+
| 5     910A           | OK            | 63.4        38                0    / 0             |
| 0                    | 0000:DA:00.0  | 0           2020 / 15039      0    / 32768         |
+======================+===============+====================================================+
| 6     910A           | OK            | 65.9        40                0    / 0             |
| 0                    | 0000:B1:00.0  | 0           2007 / 15039      0    / 32768         |
+======================+===============+====================================================+
| 7     910A           | OK            | 64.4        44                0    / 0             |
| 0                    | 0000:3D:00.0  | 0           2006 / 15039      0    / 32768         |
+======================+===============+====================================================+
```


  d. 执行如下命令，查看NPU芯片支持的昇腾虚拟化实例模板，参数id请输入    步骤3
中查询到的NPU ID。根据回显选择要使用的昇腾虚拟化实例模板。npu-smi info -t template-info -i<id>

```
npu-smi info -t template-info -i 1
+------------------------------------------------------------------------------------------+
|NPU instance template info is:                                                            |
|Name                AICORE    Memory    AICPU     VPC            VENC           JPEGD     |
|                               GB                 PNGD           VDEC           JPEGE     |
|==========================================================================================|
|vir02               2         1         1         1              0              1         |
|                                                  1.5            1              0         |
+------------------------------------------------------------------------------------------+
|vir04               4         2         1         2              0              2         |
|                                                  3              2              1         |
+------------------------------------------------------------------------------------------+
|vir08               8         4         3         4              0              4         |
|                                                  6              4              2         |
+------------------------------------------------------------------------------------------+
|vir16               16        8         7         8              0              8         |
|                                                  12             8              4         |
+------------------------------------------------------------------------------------------+
```


  e. 执行如下命令，生成随机uuid。
    cat /proc/sys/kernel/random/uuid

```
bcdca436-e624-4b9c-a6e3-a62742a86ff6
```


  f. 执行如下命令，创建指定芯片的特定昇腾虚拟化实例模板的vNPU。echo<uuid>> /sys/bus/pci/devices/<Bus-Id>/mdev_supported_types/vnpu-<template-name>/create

```
echo bcdca436-e624-4b9c-a6e3-a62742a86ff6 > /sys/bus/pci/devices/0000\:db\:00.0/mdev_supported_types/vnpu-vir02/create
```

如需删除创建好的vNPU，可通过执行echo 1 > /sys/bus/mdev/devices/bcdca436-e624-4b9c-a6e3-a62742a86ff6/remove。


  g. 查看创建的vNPU设备。
    ls -l /sys/bus/mdev/devices/

```
total 0
lrwxrwxrwx 1 root root 0 Feb 24 10:01 bcdca436-e624-4b9c-a6e3-a62742a86ff6 -> ../../../devices/pci0000:d7/0000:d7:00.0/0000:d8:00.0/0000:d9:04.0/0000:db:00.0/bcdca436-e624-4b9c-a6e3-a62742a86ff6
```


2. 将切分好的vNPU设备直通到虚拟机。

  a. 执行如下命令，查询虚拟机列表。
    virsh list --all

```
Id   Name         State
----------------------------
1    openeuler    running
```


  b. 执行如下命令，关闭目标虚拟机。
    virsh shutdown <domain>

```
virsh shutdown openeuler
Domain openeuler is being shutdown
```


  c. 修改目标虚拟机配置，将vNPU直通到目标虚拟机。

    1. 执行如下命令，打开目标虚拟机的配置文本。virsh edit<domain>

```
virsh edit openeuler
Domain openeuler XML configuration edited.
```


      ubuntu系统可能会出现如下提示，请按照提示选择编辑器。

```
Select an editor.  To change later, run 'select-editor'.
1. /bin/nano        <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed
Choose 1-4 [1]:
```


    2. 在配置文本的devices域中添加待直通的vNPU芯片信息，格式如下：

```
<hostdev mode='subsystem' type='mdev' model='vfio-pci'>
<source>
<address uuid='bcdca436-e624-4b9c-a6e3-a62742a86ff6'/>
</source>
</hostdev>
```


      “<address uuid='bcdca436-e624-4b9c-a6e3-a62742a86ff6'/>”为待直通vNPU的uuid信息，其中uuid字段取值为1.e生成的uuid值。

  d. 执行如下命令，打开目标虚拟机。virsh start<domain>

```
virsh start openeuler
Domain openeuler started
```


  e. 登录到目标虚拟机。
    在物理机上通过ssh root@xxx命令登录目标虚拟机（xxx为目标虚拟机IP地址，如：192.168.1.199）

  f. 查看直通的vNPU芯片PCIe信息。
    lspci | grep <device_name>

```
lspci | grep d801
08:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d801 (rev 20)
```


**表1 参数说明**

| 参数 | 说明 |
| --- | --- |
| device\_name | NPU芯片的PCIe名称。 Atlas 300I Pro 推理卡/Atlas 300V Pro 视频解析卡/Atlas 300V 视频解析卡/Atlas 300I Duo 推理卡<device\_name>取值为d500 Atlas 800 训练服务器（型号：9000）/Atlas 800 训练服务器（型号：9010）<device\_name>取值为d801 |
| Bus\-Id | NPU芯片的Bus\-Id值，可通过执行npu\-smi info查询。 说明： Bus\-Id值中的“：”需要用“\”进行转义。 |
| id | NPU芯片的ID，与1.c中查询到ID保持一致。 |
| uuid | 每个vNPU特有的编号，不能重复。 |
| template\-name | 昇腾虚拟化实例模板名称。 |
| domain | 目标虚拟机名称。可以通过virsh list \-\-all命令查看。 |
